package appModels

import (
	"errors"
	"github.com/gogf/gf/util/gvalid"
	"xorm.io/xorm"
)

type Files struct {
	Models   `xorm:"extends"`
	FolderId string `json:"folder_id" xorm:"varchar(128)"`                  //所属文件夹ID
	FileSign string `json:"file_sign" xorm:"varchar(128) notnull unique"`   // 文件下载获取时使用的唯一sign
	FileName string `json:"file_name" xorm:"varchar(255)"`                  //文件名称
	FileUrl  string `json:"file_url" xorm:"varchar(255)"`                   //文件路径
	FileSize int64  `json:"file_size" xorm:"bigint(11) notnull default(0)"` //文件大小
	FileExt  string `json:"file_ext" xorm:"varchar(30)"`                    //文件后缀名
	Sort     int    `json:"sort" xorm:"int notnull default(1)"`             //排序
	MCreated `xorm:"extends"`
}

// 保存到数据库使用的类型
type FileSave struct {
	FileSign string `json:"file_sign"` //文件下载获取时使用的唯一sign
	FileName string `json:"file_name"` //文件名称
	FileExt  string `json:"file_ext"`  //文件后缀名
}

//添加数据校验
func (this *Files) AddValid() error {
	rules := []string{
		"Id@required#ID不能为空",
		"FolderId@required#所属文件夹不能为空",
		"FileName@required#文件名称不能为空",
		"FileSize@required#文件大小不能为空",
		"FileExt@required#文件后缀名不能为空",
	}
	err := gvalid.CheckStruct(this, rules, nil)
	if err == nil {
		return nil
	} else {
		return errors.New(err.FirstString())
	}
}

//修改数据校验
func (this *Files) EditValid() error {
	return this.AddValid()
}

//获取模型
func (this *Files) Model() interface{} {
	return new(Files)
}

//获取模型切片
func (this *Files) Slice() interface{} {
	return new([]Files)
}

//初始化数据
func (this *Files) Init(db *xorm.Session, guid string, loginUser *UserInfo) error {
	this.Id = guid
	this.Bid = loginUser.User.Bid
	return nil
}

//添加之前调用，判断是否可添加，设置添加条件等
func (this *Files) AddWhere(db *xorm.Session, loginUser *UserInfo) error {

	return errors.New("您没有权限操作")
}

//删除之前调用，判断是否可删除，设置删除条件等
func (this *Files) DeleteWhere(db *xorm.Session, loginUser *UserInfo, ids ...string) error {

	return errors.New("您没有权限操作")
}

//修改之前调用，判断是否可修改，设置修改条件
func (this *Files) EditWhere(db *xorm.Session, loginUser *UserInfo) error {

	return errors.New("您没有权限操作")
}

//查询一条数据条件
func (this *Files) GetWhere(db *xorm.Session, loginUser *UserInfo, id string) error {

	return errors.New("您没有权限操作")
}

//查询列表条件、查询分页数据条数条件
func (this *Files) ListWhere(db *xorm.Session, loginUser *UserInfo) error {
	return errors.New("您没有权限操作")
}

//查询分页时条件
func (this *Files) PaginateWhere(db *xorm.Session, loginUser *UserInfo) error {
	return errors.New("您没有权限操作")

}
